home *** CD-ROM | disk | FTP | other *** search
/ Hottest 6 / Hottest 6 (1996)(PDSoft)[!].iso / software / fredfish / 1092.lha / Programs / ErrorMsg / WhatError / WhatError.s < prev    next >
Text File  |  1994-12-21  |  7KB  |  265 lines

  1.     opt    AMIGA
  2.  
  3. ; version 1.04
  4.  
  5.     include    exec/alerts.i
  6.     include    libraries/errormsg.i
  7.     include    libraries/errormsg_lib.i
  8.     include    utility/utility_lib.i
  9.  
  10. Start    lea    DOS.Name(pc),a1
  11.     move.l    #37,d0
  12.     move.l    4.w,a6
  13.     jsr    _LVOOpenLibrary(a6)
  14.     move.l    d0,DOS.Base
  15.     bne.s    DOSOpened
  16.     move.l    #AT_Recovery!AG_OpenLib!AO_DOSLib,d7
  17.     jmp    _LVOAlert(a6)
  18. DOSOpened    
  19.     lea    ErrorMsg.Name(pc),a1
  20.     moveq    #1,d0
  21.     jsr    _LVOOpenLibrary(a6)
  22.     move.l    d0,ErrorMsg.Base
  23.     bne.s    ErrorMsgOpened
  24.     move.l    #NoErrorMsg.MSG,d1
  25.     move.l    DOS.Base(pc),a6
  26.     jsr    _LVOPutStr(a6)
  27.     bra    CloseDOS
  28.  
  29. ErrorMsgOpened
  30.     move.l    DOS.Base(pc),a6
  31.     move.l    #Args.Template,d1
  32.     move.l    #Args.Array,d2
  33.     moveq    #0,d3
  34.     jsr    _LVOReadArgs(a6)
  35.     move.l    d0,Args.RDArgs
  36.     bne.s    ArgsRead
  37.  
  38.     jsr    _LVOIoErr(a6)
  39.     move.l    #ERMSYS_DOS,d1
  40.     move.l    #ERMSUB_IoErr,d2
  41.     lea    ReadArgsFailed.MSG(pc),a0
  42.     move.l    ErrorMsg.Base(pc),a6
  43.     jsr    _LVOPutErrorMsg(a6)
  44.     bra    CloseErrorMsg
  45.  
  46. ArgsRead
  47.     lea    SystemTranslation.Array(pc),a1
  48.     move.l    Args.Array(pc),a0
  49.     bsr    TranslateWord
  50.     cmp.l    #-1,d0
  51.     bne.s    SystemOK
  52.     move.l    #UnknownSystem.MSG,d1
  53.     move.l    DOS.Base(pc),a6
  54.     jsr    _LVOPutStr(a6)
  55.     lea    SystemTranslation.Array(pc),a2
  56.     bsr    PrintList
  57.     move.l    #SubAvailable.MSG,d1
  58.     jsr    _LVOPutStr(a6)
  59.     lea    SubSystemTranslation.Array(pc),a2
  60.     bsr    PrintList
  61.     bra.s    ErrorWritten
  62.  
  63. SystemOK
  64.     move.l    d0,d3
  65.     lea    SubSystemTranslation.Array(pc),a1
  66.     move.l    Args.Array+8(pc),d0
  67.     beq.s    SubOK
  68.     move.l    d0,a0
  69.     bsr.s    TranslateWord
  70.     cmp.l    #-1,d0
  71.     bne.s    SubOK
  72.     moveq    #ERMSUB_Generic,d0
  73.  
  74. SubOK    move.l    d0,d2
  75.     move.l    d3,d1
  76.     move.l    Args.Array+4(pc),a0
  77.     move.l    (a0),d0
  78.     suba.l    a0,a0
  79.     move.l    ErrorMsg.Base(pc),a6
  80.     jsr    _LVOPutErrorMsg(a6)
  81.     tst.l    d0
  82.     bne.s    ErrorWritten
  83.     move.l    #UnavailableCode.MSG,d1
  84.     move.l    DOS.Base(pc),a6
  85.     jsr    _LVOPutStr(a6)
  86.  
  87. ErrorWritten
  88.     move.l    Args.RDArgs(pc),d1
  89.     move.l    DOS.Base(pc),a6
  90.     jsr    _LVOFreeArgs(a6)
  91. CloseErrorMsg
  92.     move.l    ErrorMsg.Base(pc),a1
  93.     move.l    4.w,a6
  94.     jsr    _LVOCloseLibrary(a6)
  95. CloseDOS
  96.     move.l    DOS.Base(pc),a1
  97.     move.l    4.w,a6
  98.     jmp    _LVOCloseLibrary(a6)
  99.  
  100. TranslateWord    ; Result=TranslateWord(String,CompArray)(A0,A1)
  101.     move.l    ErrorMsg.Base(pc),a6
  102.     move.l    emb_UtilityBase(a6),a6
  103.     move.l    a0,a2
  104.     move.l    a1,a3
  105. .Loop    move.l    (a3)+,d0
  106.     move.l    (a3)+,d2
  107.     cmp.l    #-1,d0
  108.     beq.s    .NotFound
  109.     add.l    #KW,d0
  110.     move.l    d0,a1    ; string1=Known one (stored in increasing order)
  111.     move.l    a2,a0    ; string2=Unknown one (argument)
  112.     jsr    _LVOStricmp(a6)
  113.     tst.l    d0
  114.     bgt.s    .Loop
  115.     bne.s    .NotFound
  116.     move.l    d2,d0
  117.     rts
  118. .NotFound
  119.     moveq    #-1,d0
  120.     rts
  121.  
  122. PrintList    ; PrintList(List)(A2)
  123.     move.l    DOS.Base(pc),a6
  124. .Loop    cmp.l    #-1,(a2)
  125.     beq.s    .Finished
  126.     move.l    (a2),d1
  127.     add.l    #KW,d1
  128.     jsr    _LVOPutStr(a6)
  129.     move.l    #LF,d1
  130.     jsr    _LVOPutStr(a6)
  131.     addq.l    #8,a2
  132.     bra.s    .Loop
  133. .Finished
  134.     rts
  135.  
  136. SystemTranslation.Array
  137.     dc.l    AMIGAGUIDE-KW,ERMSYS_AMIGAGUIDE        ; sorted list
  138.     dc.l    ARP-KW,ERMSYS_ARP
  139.     dc.l    AUDIO-KW,ERMSYS_AUDIO
  140.     dc.l    CLIPBOARD-KW,ERMSYS_CLIPBOARD
  141.     dc.l    COMMODITIES-KW,ERMSYS_COMMODITIES
  142.     dc.l    CONSOLE-KW,ERMSYS_CONSOLE
  143.     dc.l    DATATYPES-KW,ERMSYS_DATATYPES
  144.     dc.l    DISKFONT-KW,ERMSYS_DISKFONT
  145.     dc.l    DOS-KW,ERMSYS_DOS
  146.     dc.l    ERRORMSG-KW,ERMSYS_ERRORMSG
  147.     dc.l    EXEC-KW,ERMSYS_EXEC
  148.     dc.l    EXPANSION-KW,ERMSYS_EXPANSION
  149.     dc.l    GADTOOLS-KW,ERMSYS_GADTOOLS
  150.     dc.l    GAMEPORT-KW,ERMSYS_GAMEPORT
  151.     dc.l    GRAPHICS-KW,ERMSYS_GRAPHICS
  152.     dc.l    IFFPARSE-KW,ERMSYS_IFFPARSE
  153.     dc.l    INPUT-KW,ERMSYS_INPUT
  154.     dc.l    INTUITION-KW,ERMSYS_INTUITION
  155.     dc.l    KEYBOARD-KW,ERMSYS_KEYBOARD
  156.     dc.l    MUI-KW,ERMSYS_MUI
  157.     dc.l    NARRATOR-KW,ERMSYS_NARRATOR
  158.     dc.l    PARALLEL-KW,ERMSYS_PARALLEL
  159.     dc.l    POWERPACKER-KW,ERMSYS_POWERPACKER
  160.     dc.l    PRINTER-KW,ERMSYS_PRINTER
  161.     dc.l    SCSIDISK-KW,ERMSYS_SCSIDISK
  162.     dc.l    SERIAL-KW,ERMSYS_SERIAL
  163.     dc.l    TIMER-KW,ERMSYS_TIMER
  164.     dc.l    TRACKDISK-KW,ERMSYS_TRACKDISK
  165.     dc.l    TRANSLATOR-KW,ERMSYS_TRANSLATOR
  166.     dc.l    XFD-KW,ERMSYS_XFD
  167.     dc.l    GADTOOLSBOX-KW,ERMSYS_GADTOOLSBOX
  168.     dc.l    GUIFRONT-KW,ERMSYS_GUIFRONT
  169.     dc.l    XPK-KW,ERMSYS_XPK
  170.     dc.l    -1
  171.  
  172. SubSystemTranslation.Array
  173.     dc.l    CXBROKER-KW,ERMSUB_CxBroker
  174.     dc.l    CXOBJERROR-KW,ERMSUB_CxObjError
  175.     dc.l    FAULT-KW,ERMSUB_Fault
  176.     dc.l    IOERR-KW,ERMSUB_IoErr
  177.     dc.l    MAKEVPORT-KW,ERMSUB_MakeVPort
  178.     dc.l    MATCHFIRST-KW,ERMSUB_MatchFirst
  179.     dc.l    MATCHNEXT-KW,ERMSUB_MatchNext
  180.     dc.l    MRGCOP-KW,ERMSUB_MrgCop
  181.     dc.l    MUIAUTOERROR-KW,ERMSUB_MUIAutoError
  182.     dc.l    NOLIBRARY-KW,ERMSUB_NoLibrary    ; new for V1.02
  183.     dc.l    NOMEMORY-KW,ERMSUB_NoMemory
  184.     dc.l    OPENSCREEN-KW,ERMSUB_OpenScreen
  185.     dc.l    OPENSCREENTAGLIST-KW,ERMSUB_OpenScreenTagList
  186.     dc.l    LOADGUI-KW,ERMSUB_LoadGUI
  187.     dc.l    SETUPSCREEN-KW,ERMSUB_SetupScreen
  188.     dc.l    OPENAWINDOW-KW,ERMSUB_OpenAWindow
  189.     dc.l    CREATEGUIA-KW,ERMSUB_CreateGUIA
  190.     dc.l    -1
  191.  
  192. DOS.Base    dc.l    0
  193. ErrorMsg.Base    dc.l    0
  194.  
  195. Args.RDArgs    dc.l    0
  196. Args.Array    dc.l    0,0,0
  197.  
  198. DOS.Name    dc.b    'dos.library',0
  199. ErrorMsg.Name    dc.b    'errormsg.library',0
  200.  
  201. NoErrorMsg.MSG    dc.b    'You need errormsg.library V1.0+ in your LIBS: directory.',10,0
  202. ReadArgsFailed.MSG    dc.b    'ReadArgs() failed',0
  203. UnknownSystem.MSG    dc.b    'Unknown system, currently available are:',10,0
  204. SubAvailable.MSG    dc.b    10,'Known Subsytems (any other for ERMSUB_Generic):',10,0
  205. UnavailableCode.MSG    dc.b    'Unavailable code !'
  206. LF    dc.b    10,0
  207.  
  208. Args.Template    dc.b    'SYSTEM/A,CODE/N/A,SUBSYSTEM',0
  209.  
  210. KW    ; base of keywords (relative displacements avoid too big Reloc tables)
  211.  
  212. ; ******************** System identificators ***********************
  213. DOS    dc.b    'dos',0
  214. EXEC    dc.b    'exec',0
  215. GRAPHICS    dc.b    'graphics',0
  216. INTUITION    dc.b    'intuition',0
  217. IFFPARSE    dc.b    'iffparse',0
  218. AUDIO    dc.b    'audio',0
  219. GAMEPORT    dc.b    'gameport',0
  220. NARRATOR    dc.b    'narrator',0
  221. PARALLEL    dc.b    'parallel',0
  222. PRINTER    dc.b    'printer',0
  223. SCSIDISK    dc.b    'scsidisk',0
  224. SERIAL    dc.b    'serial',0
  225. TRACKDISK    dc.b    'trackdisk',0
  226. CLIPBOARD    dc.b    'clipboard',0
  227. CONSOLE    dc.b    'console',0
  228. INPUT    dc.b    'input',0
  229. KEYBOARD    dc.b    'keyboard',0
  230. TIMER    dc.b    'timer',0
  231. AMIGAGUIDE    dc.b    'amigaguide',0
  232. ARP    dc.b    'arp',0
  233. COMMODITIES    dc.b    'commodities',0
  234. ERRORMSG    dc.b    'errormsg',0
  235. EXPANSION    dc.b    'expansion',0
  236. GADTOOLS    dc.b    'gadtools',0
  237. POWERPACKER    dc.b    'powerpacker',0
  238. TRANSLATOR    dc.b    'translator',0
  239. DATATYPES    dc.b    'datatypes',0
  240. DISKFONT    dc.b    'diskfont',0
  241. MUI    dc.b    'muimaster',0
  242. XFD    dc.b    'xfdmaster'
  243. GADTOOLSBOX    dc.b    'gadtoolsbox',0
  244. GUIFRONT    dc.b    'guifront',0
  245. XPK    dc.b    'xpk',0
  246.  
  247. ; ********************* Subsystem identificators *******************
  248. IOERR    dc.b    'ioerr',0
  249. MATCHFIRST    dc.b    'matchfirst',0
  250. MATCHNEXT    dc.b    'matchnext',0
  251. FAULT    dc.b    'fault',0
  252. NOLIBRARY    dc.b    'nolibrary',0
  253. NOMEMORY    dc.b    'nomemory',0
  254. MAKEVPORT    dc.b    'makevport',0
  255. MRGCOP    dc.b    'mrgcop',0
  256. OPENSCREEN    dc.b    'openscreen',0
  257. OPENSCREENTAGLIST    dc.b    'openscreentaglist',0
  258. CXBROKER    dc.b    'cxbroker',0
  259. CXOBJERROR    dc.b    'cxobjerror',0
  260. MUIAUTOERROR    dc.b    'muiautoerror',0
  261. LOADGUI    dc.b    'loadgui',0
  262. SETUPSCREEN    dc.b    'setupscreen',0
  263. OPENAWINDOW    dc.b    'openawindow',0
  264. CREATEGUIA    dc.b    'createguia',0
  265.